#include <wx/dcclient.h>
#include "wxsgridpanel.h"

#include <configmanager.h>
#include <manager.h>

IMPLEMENT_CLASS( wxsGridPanel, wxPanel )

BEGIN_EVENT_TABLE( wxsGridPanel, wxPanel )
  EVT_PAINT( wxsGridPanel::OnPaint )
END_EVENT_TABLE()

wxsGridPanel::wxsGridPanel() {
}

wxsGridPanel::wxsGridPanel( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ):
  wxPanel( parent, id, pos, size, style, name ) {
}

wxsGridPanel::~wxsGridPanel() {
}

void wxsGridPanel::OnPaint( M_Code_unused wxPaintEvent& event ) {
  wxPaintDC DC( this );
  int Width, Height;
  GetClientSize( &Width, &Height );
  DC.SetPen( wxPen( *wxBLACK ) );
  DC.SetBrush( *wxTRANSPARENT_BRUSH );
  int GridSize = GetGridSize();
  if( GridSize > 1 ) {
    for( int Y = 0; Y < Height; Y += GridSize ) {
      for( int X = 0; X < Width; X += GridSize ) {
        DC.DrawPoint( X, Y );
      }
    }
  }
  if( DrawBorder() ) {
    DC.DrawRectangle( 0, 0, Width, Height );
  }
}

int wxsGridPanel::GetGridSize() {
  return Manager::Get()->GetConfigManager( _T( "wxsmith" ) )->ReadInt( _T( "/gridsize" ), 8 );
}
